Drop focal support - #8843
Conversation
Ubuntu 20.04 (Focal Fossa) reached end-of-life on May 31, 2025. Discontinue support for this EOL release.
|
Hello stackunderfl0w 👋 Thank you for opening a Pull Request in |
gustavodiaz7722
left a comment
There was a problem hiding this comment.
🤖 AI-generated review. Authored by an AI agent. Findings were validated locally as described below; suggested changes were compiled and tested before posting.
Assessment
Correct and self-consistent. No blocking issues found.
The removed families are unreachable in practice: eksctl's minimum supported EKS version is now 1.31, while 20.04 SSM resolution was bounded to >= 1.21, < 1.29. Confirmed against AWS SSM in us-west-2 — no /aws/service/canonical/ubuntu/eks{,-pro}/20.04/<version>/… parameter exists for any supported version. The auto-resolver fallback matches nothing either, since no ubuntu-eks/k8s_1.31/images/*20.04-* images are published.
Other checks that came back clean: schema.json regenerates with no diff; the deleted integration/tests/custom_ami/testdata/ubuntu-pro-2004.yaml was already orphaned on main (no test read it); no stale Ubuntu2004/UbuntuPro2004/20.04/focal references remain outside historical release notes; the Ubuntu2404/Ubuntu2604 resolution paths are separate switch cases and are untouched.
This also fixes two pre-existing copy/paste errors in gpu_validation_test.go, where the entries labelled Ubuntu2204 and UbuntuPro2204 both asserted against NodeImageFamilyUbuntu2004.
Validation performed (commit faae988f on 99984adb, Go 1.26.5)
go build ./...— passgo test ./pkg/... ./cmd/...— pass across 85 packages.pkg/iam/oidcandpkg/karpenter/providers/helmfail only for environmental reasons (missingcfsslbinary, no network egress topublic.ecr.aws)CGO_ENABLED=0 go test -tags=releaseon affected packages — passgo vet -tags integration ./integration/...— passmake generate-schema— no diffmake binary, then dry-run across bothnodeGroupsandmanagedNodeGroupsplus the--node-ami-familyflag:Ubuntu2004andUbuntuPro2004rejected with a clear error;Ubuntu2204,UbuntuPro2204andUbuntu2404accepted
Non-blocking: two test entries deleted rather than retargeted
Both cover behaviour that still applies to 22.04, so the lost coverage looks incidental.
1. pkg/apis/eksctl.io/v1alpha5/gpu_validation_test.go — the GPU-drivers-warning DescribeTable is now Windows-only. The entry mislabelled "Windows without GPU instances" (it actually used Ubuntu2004) was the only coverage of the explicit-zero branch in validation.go:
if ng.InstanceSelector != nil && !ng.InstanceSelector.IsZero() &&
(ng.InstanceSelector.GPUs == nil || *ng.InstanceSelector.GPUs != 0) {GPUs: newInt(0) now appears nowhere in the repository, leaving that guard untested. The enclosing condition still excludes only AL2, AL2023 and Bottlerocket, so Ubuntu remains in scope.
Suggested, inserted before Entry("Windows with explicit GPU instance", …):
Entry("Ubuntu without GPU instances", gpuInstanceEntry{
amiFamily: api.NodeImageFamilyUbuntu2204,
instanceSelector: &api.InstanceSelector{
VCPUs: 4,
GPUs: newInt(0),
},
}),
Entry("Ubuntu with implicit GPU instance", gpuInstanceEntry{
amiFamily: api.NodeImageFamilyUbuntu2204,
instanceSelector: &api.InstanceSelector{
VCPUs: 4,
GPUs: newInt(2),
},
expectWarning: true,
}),2. integration/tests/managed/managed_nodegroup_test.go — the Managed CLI features table no longer has any Ubuntu entry. Retargeting rather than removing:
Entry("Ubuntu with dry-run", managedCLIEntry{
createArgs: []string{
"--node-ami-family=Ubuntu2204",
"--dry-run",
},
}),Both suggestions were applied locally and verified: gofmt clean, go vet -tags integration clean, and pkg/apis/eksctl.io/v1alpha5 runs 545 of 545 specs green with both restored entries executing.
Out of scope for this PR
validateVersionForUbuntu bounds Ubuntu2204/UbuntuPro2204 at >= 1.29 with no upper bound, but published images stop earlier:
Ubuntu 22.04 (eks): 1.29 1.30 1.31 1.32
Ubuntu 24.04 (eks): 1.31 1.32 1.33 1.34 1.35 1.36
--node-ami-family=Ubuntu2204 on EKS 1.33+ therefore passes validation and then fails at resolution with a wrapped SDK error. Pre-existing, and the same failure mode this PR removes for 20.04 — noted only because 22.04 is where this change redirects users. Not a request against this PR.
Ubuntu 20.04 LTS (Focal Fossa) reached the end of standard security maintenance on May 31, 2025.
Description
This PR supersedes #8470, #8597, and #8650, which were previously marked as stale and automatically closed.
The latest EKS version supported by Ubuntu 20.04 and Ubuntu Pro 20.04 EKS images was Kubernetes 1.29. EKS 1.29 has since reached the end of both standard and extended support.
Ubuntu Pro extends security maintenance for the operating system, but it does not extend the Amazon EKS support lifecycle for Kubernetes 1.29. Therefore, there are no currently supported EKS versions that use these image families.
Remove the Ubuntu2004 and UbuntuPro2004 AMI families from eksctl. Users should migrate to a newer supported Ubuntu release and EKS version.
Checklist
README.md, or theuserdocsdirectory)area/nodegroup) and kind (e.g.kind/improvement)BONUS POINTS checklist: complete for good vibes and maybe prizes?! 🤯